package com.hl.order.service;

import java.util.List;
import com.hl.order.domain.User;
import com.hl.order.dto.LoginRequest;
import com.hl.order.dto.RegisterRequest;
import com.hl.order.dto.LoginResponse;

/**
 * 用户列表Service接口
 * 
 * @author ruoyi
 * @date 2025-08-06
 */
public interface IUserService 
{
    /**
     * 查询用户列表
     * 
     * @param userId 用户列表主键
     * @return 用户列表
     */
    public User selectUserByUserId(Integer userId);

    /**
     * 根据手机号查询用户
     * 
     * @param userTel 用户手机号
     * @return 用户信息
     */
    public User selectUserByUserTel(String userTel);

    /**
     * 查询用户列表列表
     * 
     * @param user 用户列表
     * @return 用户列表集合
     */
    public List<User> selectUserList(User user);

    /**
     * 新增用户列表
     * 
     * @param user 用户列表
     * @return 结果
     */
    public int insertUser(User user);

    /**
     * 修改用户列表
     * 
     * @param user 用户列表
     * @return 结果
     */
    public int updateUser(User user);

    /**
     * 批量删除用户列表
     * 
     * @param userIds 需要删除的用户列表主键集合
     * @return 结果
     */
    public int deleteUserByUserIds(Integer[] userIds);

    /**
     * 删除用户列表信息
     * 
     * @param userId 用户列表主键
     * @return 结果
     */
    public int deleteUserByUserId(Integer userId);

    /**
     * 用户登录
     * 
     * @param loginRequest 登录请求
     * @return 登录响应
     */
    public LoginResponse login(LoginRequest loginRequest);

    /**
     * 用户注册
     * 
     * @param registerRequest 注册请求
     * @return 结果
     */
    public String register(RegisterRequest registerRequest);

    /**
     * 验证token
     * 
     * @param token token
     * @return 用户信息
     */
    public User validateToken(String token);

    /**
     * 根据用户名和密码查询用户（登录验证）
     * 
     * @param userName 用户昵称
     * @param userPassword 用户密码
     * @return 用户信息
     */
    public User selectUserByUsernameAndPassword(String userName, String userPassword);

    /**
     * 根据用户名查询用户信息
     * 
     * @param userName 用户昵称
     * @return 用户信息
     */
    public User selectUserByUsername(String userName);
}